package com.ruicar.afs.cloud.basic.outer.api.common.feign;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ruicar.afs.cloud.basic.outer.api.common.dto.BasicCancelInfoConditionDto;
import com.ruicar.afs.cloud.basic.outer.api.common.dto.BasicInsuranceInfoConditionDto;
import com.ruicar.afs.cloud.basic.outer.api.common.vo.BasicInsuranceInfoVo;
import com.ruicar.afs.cloud.common.core.util.IResponse;
import com.ruicar.afs.cloud.common.modules.contract.ContractMainInfoDto;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

/**
 * <p>Description: </p>
 *
 * @author ZC.GUO
 * @version 1.0
 * @date create on 2020-07-20 15:28
 */
@FeignClient(name = "contract-basic-common", url = "${com.greatwall.services.contract-basic.url}")
public interface CommonFeign {

    /**
     * 获取已激活已放款合同信息数据 多条件
     * @param condition 操作参数封装
     * @return
     * @author xudongdong
     */
    @ApiOperation("获取已激活已放款合同信息数据 多条件")
    @PostMapping(value = "basicCanaelInfo/getBasicCancelLoanList")
    public IResponse getBasicCancelLoanList(@RequestBody BasicCancelInfoConditionDto condition, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询挂靠信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询挂靠信息")
    @PostMapping(value = "custAnchorInfo/getCustAnchorInfo")
    public IResponse getCustAnchorInfo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询资产信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询资产信息")
    @PostMapping(value = "custAssetInfo/getCustAssetInfo")
    public IResponse getCustAssetInfo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);

    /**
     * 获取资产保险信息数据 多条件
     * @param condition 操作参数封装
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("获取资产保险信息数据 多条件")
    @PostMapping(value = "custInsuranceInfo/getInsurancePopList")
    public IResponse<IPage<BasicInsuranceInfoVo>> getInsurancePopList(@RequestBody BasicInsuranceInfoConditionDto condition, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询保险信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询保险信息")
    @PostMapping(value = "custInsuranceInfo/getCustInsuranceInfo")
    public IResponse getCustInsuranceInfo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询合同信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询合同信息")
    @PostMapping(value = "contractInfo/findByContractNo")
    public IResponse findByContractNo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询金融产品信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询金融产品信息")
    @PostMapping(value = "financeInfo/findByContractNo")
    public IResponse findFinanceInfo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);

    /**
     * 根据合同号码查询金融产品信息
     * @param contractNo 合同号
     * @param headers 请求头
     * @return
     * @author xudongdong
     */
    @ApiOperation("根据合同号码查询合同主信息")
    @PostMapping(value = "contractMainInfo/getContractMainInfo")
    public IResponse<ContractMainInfoDto> getContractMainInfo(@RequestParam("contractNo") String contractNo, @RequestHeader Map<String, String> headers);
}
